欢迎来到我的:世界希望作者的文章对你有所帮助,有不足的地方还请指正,大家一起学习交流!目录前言堆的时间复杂度向下调整算法的时间复杂度向上调整算法的时间复杂度堆的应用堆排序TOP—K问题链式二叉树二叉树的节点:初始化节点实现链式二叉树二叉树的概念:二叉树的遍历前序遍历中序遍历后序遍历层序遍历总结前言该篇文章写到主要是:堆排序、TOP-K问题、二叉树链式结构的实现、二叉树的遍历等等;如果有朋友还不太了解堆以及二叉树可以翻看我的上一篇博客:堆和二叉树的概念;最后老铁们准备发车喽!!!堆的时间复杂度紧接上一篇博客,我们刚刚实现了堆的实现,还没有拿他做点有意义的事情呢,咱们马上开始👉如果问你:建堆的时间
目录一、堆的概念及结构1.1堆的概念 1.2堆的性质1.3堆的结构二、堆的实现2.1堆向下调整算法(父亲与孩子做比较) 2.2堆的向上调整算法(孩子与父亲做比较)2.3堆的创建(向下建堆) 2.4向下建堆的时间复杂度2.5堆的插入2.6堆的删除2.7堆的完整代码实现三、堆的应用3.1堆排序3.2TOP-K问题 一、堆的概念及结构1.1堆的概念 1.2堆的性质堆中某个节点的值总是不大于或不小于其父节点的值;堆总是一棵完全二叉树。1.3堆的结构二、堆的实现2.1堆向下调整算法(父亲与孩子做比较)我们给出一个数组,逻辑上看做一颗完全二叉树。我们通过从根节点开始的向下调整算法可以把它调整成一个小堆。向
🚩纸上得来终觉浅,绝知此事要躬行。🌟主页:June-Frost🚀专栏:数据结构🔥该文章着重讲解了使用顺序结构实现堆的插入和删除等操作。目录:🌍二叉树的顺序结构🔭堆🌏代码实现✉️堆的插入✉️堆的删除✉️其他部分❤️结语🌍二叉树的顺序结构 二叉树的顺序存储是指将二叉树中的所有节点按照一定的顺序(一层一层)存储到一个数组中。 我们可以通过数组下标来表示节点之间的父子关系。找左孩子节点:leftchild=parent*2+1找右孩子节点:rightchild=parent*2+2例如,找B的左孩子:B的下标*2+1,得到3,即为D。找父亲节点:parent=(child-1)/2例如,找G的父母:(
堆的定义首先我们要明确堆是个什么东西,简而言之堆就是一个具有特殊性质的完全二叉树完全二叉树:一棵深度为k的有n个结点的二叉树,对树中的结点按从上至下、从左到右的顺序进行编号,如果编号为i(1≤i≤n)的结点与满二叉树中编号为i的结点在二叉树中的位置相同,则这棵二叉树称为完全二叉树堆的特殊性质体现在结点与子结点的大小关系上,当父结点的值大于等于其子节点的值时候就是大根堆,反之就是小根堆堆的操作在堆的数据结构中,堆中的最大值总是位于根节点(在优先队列中使用堆的话堆中的最小值位于根节点)。堆中定义以下几种操作:最大堆调整(MaxHeapify):将堆的末端子节点作调整,使得子节点永远小于父节点创建最
数据结构-堆的实现及应用[堆排序和TOP-K问题]一.堆的基本知识点1.知识点二.堆的实现1.堆的结构2.向上调整算法与堆的插入2.向下调整算法与堆的删除三.整体代码四.利用回调函数避免对向上和向下调整算法的修改1.向上调整算法的修改2.向下调整算法的修改3.插入元素和删除元素函数的修改五.建堆1.自顶向下的建堆方式(利用向上调整算法)2.自底向上的建堆方式(利用向下调整算法)3.两种方法建堆的时间复杂度1.向下调整算法建堆的时间复杂度2.向上调整算法建堆的时间复杂度六.堆排序1.算法思想2.代码实现3.时间复杂度4.稳定性七.TOP-K问题八.一道与TOP-K相关的leetcode题目九.测
文章目录堆的概念性质图解向上调整算法算法分析代码整体实现向下调整算法算法分析整体代码实现堆的接口实现初始化堆销毁堆插入元素删除元素打印元素判断是否为空取首元素实现堆堆排序创建堆调整堆整合步骤TopK问题堆的概念堆就是将一组数据所有元素按完全二叉树的顺序存储方式存储在一个一维数组中,并满足树中每一个父亲节点都要大于其子节点称为大堆(树中每一个父亲节点都要大于其子节点称为小堆)。性质①对于大堆(大根堆)来说,堆的顶部也就是数组首元素一定是最大的元素②对于小堆(小根堆)来说,堆的顶部也就是数组首元素一定是最小的元素(这两点对于下面的堆排序来说十分重要)此外,堆总是一棵完全二叉树,因为堆本身就是二叉树
文章目录一、堆的概念及结构1、什么是堆2、堆的性质3、堆的结构及分类二、堆的创建1、堆向下调整算法2、堆向上调整算法3、堆的创建一、堆的概念及结构1、什么是堆堆就是以二叉树的顺序存储方式来存储元素,同时又要满足父亲结点存储数据都要大于儿子结点存储数据或者父亲结点数据都要小于儿子结点数据的一种数据结构。将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。2、堆的性质堆中某个节点的值总是不大于或不小于其父节点的值堆总是一棵完全二叉树堆的根节点总是极值3、堆的结构及分类小堆:所有的双亲结点都小于孩子节点,根节点最小大堆:所有的双亲结点都大于孩子节点,根节点最大二、堆的创建后面代码用
W...Y的主页 😊代码仓库分享 💕上篇文章,我们认识了什么是树以及二叉树的基本内容、表示方法……接下来我们继续来深入二叉树,感受其中的魅力。目录 二叉树的顺序结构堆的概念及结构堆的实现 堆的创建 堆的初始化与释放空间 堆的插入堆的删除 堆实现的代码接口,以及简单函数的直接实现 二叉树的顺序结构普通的二叉树是不适合用数组来存储的,因为可能会存在大量的空间浪费。而完全二叉树更适合使用顺序结构存储。现实中我们通常把堆(一种二叉树)使用顺序结构的数组来存储,需要注意的是这里的堆和操作系统虚拟进程地址空间中的堆是两回事,一个是数据结构,一个是操作系统中管理内存的一块区域分段。 顺序存储又叫数组存储
文章目录🍀堆的插入与删除🛫堆的插入🚩代码实现:🛬堆的删除🎋堆的常见习题🎈习题一🎈习题二🎈习题三🎄PriorityQueue🐱👓PriorityQueue的特性🎍PriorityQueue常用接口介绍🛫优先级队列的构造🚨注意:🛬插入/删除/获取优先级最高的元素🎡PriorityQueue的扩容方式🌲PriorityQueue面试题---[最小K个数](https://leetcode.cn/problems/smallest-k-lcci/submissions/)🐱👤题目描述:🐱🐉示例与提示:🐱👓思路解析:🐱🏍代码实现:🚨注意:🌳堆的应用🐱👤PriorityQueue的实现🐱🐉堆